import Plant from './plant';
import OneShotAnimation from '../base/one_shot_animation';
import Music from '../runtime/music';
import BianbianBullet from '../player/bianbian_bullet';

/**
 * 皮卡丘类
 * 继承自Plant，攻击方式为找到当前僵尸x坐标最小的一个对其造成50伤害
 */
export default class Wusaqi extends Plant {
  constructor(imgPrefix, frameCount = 1, width = 0, height = 0, frameInterval = 5, x = 0, y = 0, resourceLoader = null) {
    super(imgPrefix, frameCount, width, height, frameInterval, x, y, resourceLoader);
    this.attackCooldown = 200; // 攻击冷却帧数（1秒）
    this.currentCooldown = 0; // 当前冷却时间
  }

  /**
   * 更新方法
   * 处理攻击冷却和执行攻击
   */
  update() {
    super.update(); // 调用父类更新方法
    
    // 冷却时间减少
    if (this.currentCooldown > 0) {
      this.currentCooldown--;
      return;
    }
    
    this.attack();
    this.currentCooldown = this.attackCooldown; // 重置冷却
  }

  /**
   * 攻击方法
   */
  attack() {
    // 从对象池获取便便子弹
    const bullet = GameGlobal.databus.pool.getItemByClass('bianbianBullet', BianbianBullet);
    // 初始化子弹位置（植物右侧中间）
    bullet.init(this.x + this.width/2, this.y + this.height/2, 3);
    // 添加到游戏中
    GameGlobal.databus.bullets.push(bullet);
    
    // 播放音效
    Music.getInstance().playShoot();
  }
}